package com.baichang.taoshunda.dao;

import com.baichang.framework.dao.BaseDao;
import com.baichang.framework.model.Page;
import com.baichang.taoshunda.entity.Bussiness;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface BussinessDao extends BaseDao<Bussiness> {
    /**
     * 根据城市编号获取对应的推荐商家
     *
     * @param cityId 城市编号
     * @param lng
     * @param lat    @return
     */
    List<Map<String, Object>> getRecommendBussiness(Integer cityId, String lng, String lat);

    /**
     * 查询商家列表
     *
     * @param startCreate
     * @param startTime
     * @param endTime
     * @param cityId
     * @param typeId
     * @param name
     * @param nowPage
     * @param pageSize    @return
     */
    Page queryBusinessList(String startCreate, String endCreate, String startTime, String endTime, Integer cityId, Integer typeId, String name, int nowPage, int pageSize);

    /**
     * 商家订单查询
     *
     * @param
     * @param
     * @param id
     * @param nowPage
     * @param pageSize @return
     */
    Page<Map<String, Object>> businessOrderList(Integer id, int nowPage, int pageSize);

    /**
     * 商家明细查询
     *
     * @param id
     * @param nowPage
     * @param pageSize @return
     */
    Page<Map<String, Object>> businessOrderDetails(Integer id, int nowPage, int pageSize);

    /**
     * 商家禁用、启用
     *
     * @param id
     * @param state
     * @return
     */
    int updateStatus(Integer id, Integer state);

    /**
     * 修改商家信息
     *
     * @param map
     * @param id
     * @return
     */
    int update(Map map, Integer id);

    /**
     * 查询审核商家
     *
     * @param businessName
     * @param account
     * @param telephone
     * @param cityName
     * @param address
     * @param nowPage
     * @param pageSize     @return
     */
    Page queryBusinessAudit(String businessName, String account, String telephone, String cityName, String address, int nowPage, int pageSize);

    /**
     * 获取推荐商家的数量
     *
     * @param
     * @return
     */
    Map<String, Object> getIsRecommend();

    /**
     * 修改诚信商家
     *
     * @param id
     * @param isRecommend
     * @return
     */
    int updateRecommend(Integer id, Integer isRecommend);

//    /**
//     * 审核商家
//     *
//     * @param id
//     * @param audit
//     * @return
//     */
//    int updateAudit(Integer id, Integer audit, String reason);

    /**
     * 商家修改账号
     *
     * @param id
     * @param passWord
     * @return
     */
    int updateBusinessAccount(Integer id, String passWord);

    /**
     * 查询商家详情
     * 接口
     * 武圣路
     *
     * @param bussId 商家编号
     * @return
     */
    Map<String, Object> getBussinessDateial(int bussId);

    /**
     * 查询商家列表
     *
     * @param typeId     查询类型 1综合排序2 销量 3距离
     * @param cityId     城市编号
     * @param nowPage    当前页
     * @param pageSize   @return
     * @param bussTypeId
     * @param userId
     * @param ulat
     * @param ulng
     */
    List<Map<String, Object>> getBussinessList(int typeId, int cityId, int nowPage, int pageSize, int bussTypeId, int userId, double ulat, double ulng);


    /**
     * 根据用户id查询邀请商家列表
     *
     * @param userId   用户id
     * @param nowPage  当前页
     * @param pageSize @return
     * @param ulat
     * @param ulng
     */
    List<Map<String, Object>> getBussinessListByUserId(int userId, int nowPage, int pageSize, double ulat, double ulng);

    /**
     * 根据手机号获取商家信息
     *
     * @param phone 手机号
     * @return
     */
    Bussiness getBussnessByPhone(String phone);

    /**
     * 根据手机号获取商家信息
     *
     * @param phone
     * @return
     */
    Bussiness getAuditBussnessByPhone(String phone);

    /**
     * 忘记密码修改密码
     *
     * @param account 账号
     * @param newPwd  新密码
     * @return
     */
    int updateForgetPwd(String account, String newPwd);

    /**
     * 修改商家个人信息
     *
     * @param bussId  商家编号
     * @param headPic 头像
     * @param name    名称
     * @param sex     性別
     * @return
     */
    int updateBusinessInfo(Integer bussId, String headPic, String name, String sex);

    /**
     * 修改账号
     *
     * @param bussId     商家编号
     * @param newAccount 账号
     * @return
     */
    int updateBussinessAccount(Integer bussId, String newAccount);

    /**
     * 修改密码
     *
     * @param bussId 商家编号
     * @param pwd    密码
     * @return
     */
    int updatePwd(Integer bussId, String pwd);

    /**
     * 推荐商家广告位
     *
     * @param id
     * @param isPosition
     * @return
     */
    int updateIsPosition(Integer id, Integer isPosition);

    /**
     * 查询推荐商家
     *
     * @param name
     * @param cityName
     * @param nowPage
     * @param pageSize @return
     */
    Page queryRecommendBusiness(String name, String cityName, int nowPage, int pageSize);

    /**
     * 查询推荐广告位
     *
     * @param name
     * @param cityId
     * @param nowPage
     * @param pageSize @return
     */
    Page queryRecommendAdv(String name, Integer cityId, int nowPage, int pageSize);

    /**
     * 修改是否营业
     *
     * @param bussId 商家编号
     * @param isOpen 是否营业
     * @return
     */
    int updateShopIsOpen(Integer bussId, int isOpen);

    /**
     * 搜索商家
     *
     * @param cityId
     * @param key
     * @param bussTypeId
     * @param nowPage
     * @param pageSize   @return
     * @param address
     */
    List<Map<String, Object>> getBusinessByKey(int cityId, String key, int bussTypeId, int nowPage, int pageSize, String address);

    /**
     * 查询未通过的商家
     *
     * @param businessName
     * @param account
     * @param telephone
     * @param cityName
     * @param address
     * @param nowPage
     * @param pageSize
     * @return
     */
    Page queryNotBusiness(String businessName, String account, String telephone, String cityName, String address, int nowPage, int pageSize);

    /**
     * 修改商家的背景图片
     *
     * @param bussId        商家编号
     * @param backgroundPic 背景图片
     * @return
     */
    int updateBussinessBackgroundPic(Integer bussId, String backgroundPic);

    /**
     * 查询商家优惠活动
     *
     * @param businessName
     * @param nowPage
     * @param pageSize
     * @return
     */
    Page queryBusinessActivity(String businessName, int nowPage, int pageSize);

    /**
     * 根据城市查询商家
     *
     * @param id
     * @return
     */
    List<Map<String, Object>> queryBusinessCity(Integer id);

    /**
     * 修改商家余额
     *
     * @param bussId     商家编号
     * @param afterMoney 余额
     * @return
     */
    int updateBussinessBalance(Integer bussId, Double afterMoney);

    /**
     * 修改推荐状态
     *
     * @param link
     * @return
     */
    int updateBusState(Integer link);

    /**
     * 诚信商家修改排序
     *
     * @param id
     * @param sorting
     * @return
     */
    int updateSorting(Integer id, Integer sorting);

    /**
     * 修改商家详情信息
     *
     * @param id               商家编号
     * @param startTime        开始时间
     * @param endTime          结束时间
     * @param phone            电话
     * @param area             地区
     * @param cityId           城市编号
     * @param address          地址
     * @param lat              纬度
     * @param lng              经度
     * @param isInvoice
     * @param shopPic
     * @param storePic         @return
     * @param provinceId
     * @param areaId
     * @param minCityId
     * @param otherLicenses
     * @param otherLicensesTwo
     * @param bussLicnese
     * @param serviceLince
     */
    int updateBussDetails(Integer id, String startTime, String endTime, String phone, String area, Integer cityId, String address, String lat, String lng, Integer isDispatching, String isInvoice, String shopPic, String storePic, Integer provinceId, Integer areaId, int minCityId, String otherLicenses, String otherLicensesTwo, String bussLicnese, String serviceLince);

    /**
     * @param cityId
     * @param address
     * @param bussTypeId
     * @param nowPage
     * @param pageSize   @return
     */
    List<Map<String, Object>> getBusinessByAddress(int cityId, String address, int bussTypeId, int nowPage, int pageSize);

    /**
     * @param bussId
     * @param s
     * @param emPwd
     * @return
     */
    boolean updateHxbussInfo(Long bussId, String s, Object emPwd);

    /**
     * 查询该商家下的诚信和广告位
     *
     * @param id
     * @return
     */
    Map<String, Object> queryBusInfo(Integer id);

    /**
     * 更新最后登录时间
     *
     * @param account
     * @return
     */
    int updateLastLoginTime(String account);

    /**
     * 查询总数
     *
     * @param cityId
     * @param address
     * @param bussTypeId
     * @return
     */
    int getTotal(int cityId, String address, int bussTypeId);

    /**
     * @param cityId
     * @param key
     * @param bussTypeId
     * @return
     */
    int getTotalByKey(int cityId, String key, int bussTypeId);

    /**
     * @param typeId
     * @param cityId
     * @param bussTypeId
     * @param userId
     * @return
     */
    int getTotal(int typeId, int cityId, int bussTypeId, int userId);

    /**
     * 修改排名
     *
     * @param id
     * @return
     */
    int updateSort(Integer id);

    /**
     * 修改保存融云token
     *
     * @param bussId
     * @param ryToken
     */
    void updateRYToken(Long bussId, String ryToken, String trendsUserId);

    /**
     * 添加设置提现密码
     *
     * @param bussId
     * @param cashPwd
     * @return
     */
    boolean addCashPwd(Integer bussId, String cashPwd);

    /**
     * @return
     */
    Map<String, Object> businessCount();

    /**
     * @param busId
     * @param money
     * @return
     */
    int updateBalance(Integer busId, BigDecimal money);

    /**
     * @param busId
     * @return
     */
    Bussiness getCompanyById(Integer busId);

    /**
     * 添加商家冻结金额
     *
     * @param sellerId
     * @param money
     */
    void updateFreezeMoney(Integer sellerId, double money);

    /**
     * @param id
     * @return
     */
    int getCompanyCountByTypeId(Integer id);

    /**
     * 获取装备商城商家信息
     *
     * @param companyTypeId 装备商城类型编号
     * @return
     */
    Bussiness getBussinessByTypeId(int companyTypeId);

    /**
     * 查询该用户下的返利商家
     *
     * @param userId 用户编号
     * @return
     */
    Integer getRebateCount(Integer userId);

    /**
     * 功能描述:
     * 注册商家第二步
     *
     * @param companyId           商家编号
     * @param area                地区
     * @param provinceId          省份编号
     * @param registerNumber      注册步数
     * @param servicePhone        服务电话
     * @param name                商家名称
     * @param address             商家地址
     * @param cityId              市级编号
     * @param areaId              区级编号
     * @param typeId              商家类型编号
     * @param lng                 商家经度
     * @param lat                 商家纬度
     * @param legalPeople         法人
     * @param emergencyContact    紧急联系人
     * @param emergencyContactTel 紧急联系人电话
     * @param minCityId           最小城市编号
     * @return:
     * @auther: wsl
     * @date: 2019/2/26 9:51
     */
    boolean registerSecondStep(Integer companyId, String area, Integer provinceId, Integer registerNumber, String servicePhone, String name, String address, Integer cityId, Integer areaId, Integer typeId, String lat, String lng, String legalPeople, String emergencyContact, String emergencyContactTel, int minCityId);

    /**
     * 功能描述:
     *
     * @param:
     * @return:
     * @auther: wsl
     * @date: 2019/2/26 10:18
     */
    boolean registerThreeStep(Integer companyId, Integer registerNumber, String storePic, String shopPic, String legalCardPic, String handheldPhotos, String fontCard, String reverseCard, String bussLicnese, String serviceLince);
}